前回の記事<<CELL関数でファイル名を取得して表示する方法【初心者のためのExcel入門】>>では、ファイルのパスを取得できるCELL関数の基本の使い方と、求めたパスからMID関数などを使用してファイル名の部分だけを切り出す方法などについてご紹介致しました。
今回はスケジュールや工程管理に便利な、年や月を指定するだけで自動的に日付や曜日が入力されるカレンダーを作成するための関数についてご紹介したいと思います。
■ 説明に使用したExcelのバージョン:Excel2013
1. カレンダーの日付部分を作成する
1.1 DATE関数で日付を連動させて表示する
今回は最終的に次のような表を作ることを目標として、手順をご紹介します。
日付の取得には、DATE関数を使用します。
DATE関数の書式は次の通りです。
DATE( 年, 月, 日)
今回は、年と月を入力しさえすれば日付や曜日を自動で表示することができる形を目指しているので、年月を入力する場所を準備します。
これらをDATE関数に当てはめます。なお日付の部分については、1, 2, 3...などの数字をそのまま当てはめてもOKですが、今回は全ての行に同じ値を入力すればいいROW関数を使用してみました。
DATE( 年を入力したセル, 月を入力したセル, ROW()-ヘッダの行数)
ROW()で該当セルの行番号を取得し、そこからヘッダの行数を引くことで1から始まる連番を設定することができます。例えば前図のように年がB4に、月がD4に入力されている状況の場合、1日目は次のように入力します。今回ヘッダが5行目まであるので、ROW()から引く数字は「5」にします。
DATE( $A$3, $C$3, ROW()-5)
これを31行ぶんコピーします。すると31日ぶんの日付が「YYYY/MM/DD」の形で表示されました。
なお4月は30日までしかないので、31行目は「2017/5/1」と表示されました。
※A3セルを$A$3と「$」を付けて記載することによって、縦や横にドラッグして関数をコピーする場合に自動で変化することを防いで(固定して)います。
1.2 日付のフォーマット(表示形式)を変更する
今回、日付は「2017/4/1」ではなく「4月1日」と表示させたいと考えていますが、この表示の形式は「セルの書式設定」で変更することができます。
表示形式を変更したいセルを全て選択して、右クリックメニューから「セルの書式設定」を選択します。
「セルの書式設定」画面が表示されたら、「表示形式」タブをクリックします。
この画面で希望する「分類」と「種類」を選択しますが、今回は分類「日付」、種類「3月14日」を選択し、OKボタンを押します。
すると、月日の表示が「4月1日」などのタイプの表示になりました。
なお日付のみを表示したいなどの場合も、同様に表示形式の種類から希望の形式を選択することで対応可能です。
1.3 DAY関数とIF関数で不要な日付を空白にする
前項までの状態では1月など31日まである月は問題ないですが、例の4月など31日までない月の場合に表示されてしまう翌月の日付の部分を空白にする処理が必要になります。
その処理は、DAY関数とIF関数の組み合わせで実現することができます。
DAY関数とは、年月日の情報から「日」の情報だけを取得する関数です。
DAY(対象の日付)
DAY関数に日付や日付の入ったセルを指定すると、結果にはその「日」の部分だけが抜粋された「1~31までの整数値」が表示されます。
これを利用することで、29~31日に該当するはずの部分に1~3などの翌月の日付が入っていれば空白文字に置き換える処理を行います。
条件次第で結果を置き換える処理には、IF関数を使用します。
IF(条件式, 条件式がTRUEの場合の表示内容, 条件式がFALSEの場合の表示内容)
IF関数を使用して、DAY関数の結果が何行目かと一致しなければ空白文字「""」を設定するには、次のように書くことができます。
IF(DAY(対象の日付)=ROW()-5, 対象の日付, "")
こうして、5月1日の行を空白にすることができました。
1.4 組み合わせた結果
これらの関数を使って次のように組み合わせることで、月日の表示が一行で実現できました。
IF(DAY(DATE( 年, 月, ROW()-N))=ROW()-N, DATE( 年, 月, ROW()-N), "")
※年を入力したセルを年、月を入力したセルを月、ヘッダの行数をNとする。
2. カレンダーに曜日を表示する
2.1 曜日を表す表示形式「aaa」
曜日の設定は、日付を指定して該当する表示形式を選択するだけで行うことができます。ただしデフォルトでは設定が存在していないので、設定を作成する必要があります。
まず曜日を設定したいセルから、日付のセルを参照します。
このままだとデフォルトの「YYYY/MM/DD」形式で表示されるので、該当のセルを選択した状態で「セルの書式設定」を開き、「表示形式」タブを表示します。
分類の中から「ユーザ定義」を選択し、種類に「aaa」と入力します。すると自動的にサンプル欄に曜日(例では土)が表示されるので、OKボタンを押します。
こうして、曜日が自動的に設定されました。
▶ 自社開発に転職できるおすすめプログラミングスクールを徹底解説!-お仕事応援ドットコム
3. まとめ
今回作成した表の月を変更してみると、無事自動で日付表示と曜日表示が更新されました。
予定表など毎月同じ形のカレンダーを使うものは、この自動で動く年間カレンダーを作っておくと毎月さらには毎年手入力で新たに表を作成する手間が省けるようになります。ぜひ活用してみて下さいね。
当サイトプロエンジニアのコンサルタントが厳選したおすすめのフリーランス案件特集はこちら
特集ページから案件への応募も可能です!
実際にフリーランスエンジニアとして活躍されている方のインタビューはこちら